function UnitTests:testField()

	local stage =
	{
		Rooms =
		{
			Room1 =
			{			
			},
			
			Room2 =
			{	
			}			
		},
		
		Doors =
		{
			{
				Rooms = 
				{
					"Room1",
					"Room2"
				},
				
				ClosedAndLocked = true			
			}
		}		
	}
	
	local cast =
	{
		Player =
		{
			initialLocation = "Room1"
		},
	}
	
	local game = Game:new(stage, cast)
	
	local room1 = gField.entityTypes.Location.Room1
	local room2 = gField.entityTypes.Location.Room2
	local key = gField.entityTypes.Key["Room1<->Room2"]
	local door = gField.entityTypes.Door["Room1<->Room2"]
			

	gRandom:addContextualBias({"Door", "Room1<->Room2", "EnablingSteps"}, Door.LockedStep)	-- we close the door to avoid pruning of the key
	gRandom:addContextualBias({"Key", "Room1<->Room2", "CurrentContainer"}, room1)			-- put key in room1 to avoid the deadlock filter to prevent the door to close
	
	assert(not key:isPropertyCollasped("CurrentContainer"))
	
	gGame:start()
	
	assert(gPlayer.body:getCollapsedProperty("CurrentContainer") == room1)
	assert(not door:hasUndeterminedSate())
	assert(door:isDisabled())
	assert(key:isPropertyCollasped("CurrentContainer"))
	assert(key:getCollapsedProperty("CurrentContainer") == room1)
	assert(key.lastObservationBeat == gField.beat)
		
	gPlayer.body:execute("moveTo", room2)
	gGame:onBeat()
	
	assert(gPlayer.body:getCollapsedProperty("CurrentContainer") == room2)
	assert(key.lastObservationBeat ~= gField.beat)
end